print("Hello Python!")

# Python 3 基础语法
# 缩进
if True:
    print("This is true")
else:
    print("This is false")

# 注释
# 这是一个注释
# 这也是一个注释

# 变量
counter = 100 # 赋值整型变量
miles = 1000.0 # 浮点型
name = "John" # 字符串

# 常量
PI = 3.1415926 # 常量，不能修改

# 运算符
a = 10
b = 20
c = a + b # 加法
d = a - b # 减法
e = a * b # 乘法
f = a / b # 除法
g = a % b # 取模
h = a ** b # 幂
i = a // b # 整除

# 条件语句
if a > b:
    print("a is greater than b")
elif a < b:
    print("a is less than b")
else:
    print("a is equal to b")

# 循环语句
for i in range(10): # 循环 10 次
    print(i)

while counter < 10: # 循环，直到 counter 大于等于 10
    print(counter)
    counter += 1 # 自增 1

# 函数
def add(a, b): # 定义一个函数，接收两个参数
    return a + b # 返回 a + b 的值

print(add(1, 2)) # 调用函数，输出 3

# 类
class Person: # 定义一个类
    def __init__(self, name, age): # 构造函数，初始化属性
        self.name = name # 实例属性
        self.age = age # 实例属性

    def say_hello(self): # 实例方法
        print("Hello, my name is " + self.name) # 输出实例属性

p = Person("John", 30) # 创建一个 Person 对象
p.say_hello() # 调用实例方法，输出 "Hello, my name is John"

# 模块
import math # 导入 math 模块

print(math.pi) # 输出 math 模块中的 pi 常量

# 文件操作
f = open("test.txt", "w") # 打开一个文件，以写入模式
f.write("Hello, world!") # 写入文件
f.close() # 关闭文件

f = open("test.txt", "r") # 打开一个文件，以读取模式
print(f.read()) # 读取文件
f.close() # 关闭文件

# 异常处理
try: # 尝试执行
    f = open("test.txt", "r") # 打开一个文件，以读取模式
    print(f.read()) # 读取文件
    f.close() # 关闭文件
except FileNotFoundError: # 捕获 FileNotFoundError 异常
    print("File not found") # 输出错误信息
else: # 如果没有异常
    print("File read successfully") # 输出成功信息
finally: # 无论是否有异常，都会执行
    print("File closed") # 输出关闭信息

# 列表
a = [1, 2, 3, 4, 5] # 定义一个列表
print(a[0]) # 输出列表中的第一个元素，输出 1
print(a[1:3]) # 输出列表中的第二个到第三个元素，输出 [2, 3]
print(a[2:]) # 输出列表中的第三个到最后一个元素，输出 [3, 4, 5]
print(a[:3]) # 输出列表中的第一个到第三个元素，输出 [1, 2, 3]
print(a[:]) # 输出列表中的所有元素，输出 [1, 2, 3, 4, 5]
print(a[-1]) # 输出列表中的最后一个元素，输出 5 (负数表示从后往前数)
print(a[-2:]) # 输出列表中的倒数第二个到最后一个元素，输出 [4, 5]
print(a[:-2]) # 输出列表中的第一个到倒数第二个元素，输出 [1, 2, 3]
print(a[::2]) # 输出列表中的所有元素，步长为 2，输出 [1, 3, 5] (从左往右数) (步长为 2)
print(a[::-1]) # 输出列表中的所有元素，步长为 -1，输出 [5, 4, 3, 2, 1] (从右往左数) (步长为 -1) 

# 元组
a = (1, 2, 3, 4, 5) # 定义一个元组
print(a[0]) # 输出元组中的第一个元素，输出 1
print(a[1:3]) # 输出元组中的第二个到第三个元素，输出 (2, 3)
print(a[2:]) # 输出元组中的第三个到最后一个元素，输出 (3, 4, 5)
print(a[:3]) # 输出元组中的第一个到第三个元素，输出 (1, 2, 3)
print(a[:]) # 输出元组中的所有元素，输出 (1, 2, 3, 4, 5)

# 字典
a = {"name": "John", "age": 30, "city": "New York"} # 定义一个字典
print(a["name"]) # 输出字典中的 name 键对应的值，输出 "John"
print(a["age"]) # 输出字典中的 age 键对应的值，输出 30
print(a["city"]) # 输出字典中的 city 键对应的值，输出 "New York"
print(a.get("name")) # 输出字典中的 name 键对应的值，输出 "John"
print(a.get("country")) # 输出字典中的 country 键对应的值，输出 None (如果键不存在) 
print(a.get("country", "China")) # 输出字典中的 country 键对应的值，输出 "China" (如果键不存在)

# 集合
a = {1, 2, 3, 4, 5} # 定义一个集合
print(a) # 输出集合中的所有元素，输出 {1, 2, 3, 4, 5}
print(1 in a) # 判断 1 是否在集合中，输出 True
print(6 in a) # 判断 6 是否在集合中，输出 False  
print(len(a)) # 输出集合中的元素个数，输出 5
a.remove(1) # 删除元素 1 从集合中 (如果元素不存在，会抛出 KeyError 异常)
a.add(6) # 添加元素 6 到集合中 (如果元素已经存在，不会重复添加) 
print(a) # 输出集合中的所有元素，输出 {1, 2, 3, 4, 5, 6} (集合中的元素是无序的) 

# 字符串
a = "Hello, world!" # 定义一个字符串
print(a[0]) # 输出字符串中的第一个字符，输出 "H"
print(a[1:3]) # 输出字符串中的第二个到第三个字符，输出 "el" 
print(a[2:]) # 输出字符串中的第三个到最后一个字符，输出 "llo, world!" 
print(a[:3]) # 输出字符串中的第一个到第三个字符，输出 "Hel" 
print(a[:]) # 输出字符串中的所有字符，输出 "Hello, world!" 
print(a[-1]) # 输出字符串中的最后一个字符，输出 "!" (负数表示从后往前数)
print(a[-2:]) # 输出字符串中的倒数第二个到最后一个字符，输出 "ld!" (负数表示从后往前数) 
# 字符串格式化
name = "John" # 定义一个字符串
age = 30 # 定义一个整数
print("My name is %s and age is %d" % (name, age)) # 输出 "My name is John and age is 30" (格式化字符串)
print("My name is {} and age is {}".format(name, age)) # 输出 "My name is John and age is 30" (格式化字符串)
print(f"My name is {name} and age is {age}") # 输出 "My name is John and age is 30" (格式化字符串) (Python 3.6 及以上版本)
# 字符串方法
a = "Hello, world!" # 定义一个字符串
print(a.upper()) # 输出字符串中的所有字符，输出 "HELLO, WORLD!" (大写) 
print(a.lower()) # 输出字符串中的所有字符，输出 "hello, world!" (小写) 
print(a.strip()) # 输出字符串中的所有字符，输出 "Hello, world!" (去除首尾空格) 
print(a.replace("world", "Python")) # 输出字符串中的所有字符，输出 "Hello, Python!" (替换字符串)
print(a.split(",")) # 输出字符串中的所有字符，输出 ["Hello", " world!"] (分割字符串)
print(a.find("world")) # 输出字符串中的所有字符，输出 7 (查找字符串) (如果找不到，返回 -1) 
print(a.index("world")) # 输出字符串中的所有字符，输出 7 (查找字符串) (如果找不到，抛出 ValueError 异常) 
print(a.count("o")) # 输出字符串中的所有字符，输出 2 (统计字符串出现的次数) 
print(a.isalpha()) # 输出字符串中的所有字符，输出 False (判断字符串是否全为字母) 
print(a.isdigit()) # 输出字符串中的所有字符，输出 False (判断字符串是否全为数字)
print(a.isalnum()) # 输出字符串中的所有字符，输出 False (判断字符串是否全为字母或数字) 
print(a.isspace()) # 输出字符串中的所有字符，输出 False (判断字符串是否全为空格)
print(a.startswith("Hello")) # 输出字符串中的所有字符，输出 True (判断字符串是否以指定字符串开头) 
print(a.endswith("world!")) # 输出字符串中的所有字符，输出 True (判断字符串是否以指定字符串结尾) 